The invention relates to server systems for use in a network of computers. More particularly, the invention relates to delivering events to local and remote servers.
Client/server systems, in which the server executes one or more applications for a client, are similar to traditional multi-user systems such as UNIX. Graphically, these systems behave similarly to X-WINDOWS, a user interface standard for UNIX systems. A client/server system, such as the commercially available WINFRAME system manufactured by Citrix Systems, Inc. of Ft. Lauderdale, Fla., may include a number of application servers. Each application server may support multi-tasking of several applications that may be requested by a user at a remotely located workstation.
In order to minimize response time, maximize system throughput, and generally give the appearance that the user""s application program is executing at the client, an administrator will often provide a user with access to a number of application servers that host the desired applications and are capable of servicing the user""s requests. However, in order for such a system to operate efficiently, the application servers must dynamically coordinate access to system resources shared among the application servers as well as coordinate access to the application servers by the user. One way in which this is done is selecting one server from the group to act as the xe2x80x9cmaster server.xe2x80x9d The master server is responsible for keeping track of resource usage both by users and application servers. However, as the number of applications servers grows larger, the administrative burden becomes significant, effectively limiting the size of these networks.
The present invention avoids this potential problem.
The present invention relates to a method and apparatus for delivering events to local and remote servers. In one aspect, the invention relates to a method for communicating in a server system. The method includes the steps of providing a first server having a first plurality of subsystems and a first event bus, providing a second server having a second plurality of subsystems and a second event bus and posting to the first event bus, by one of the first plurality of subsystems, a local event having as its target another of the first plurality of subsystems. The method also includes the step of posting to the first event bus, by one of the first plurality of subsystems, a remote event having as its target one of the second plurality of subsystems.
In one embodiment, the method also includes the step of delivering, by the event bus, the local event to the target subsystem. In another embodiment, the method also includes the step of delivering, by the event bus, the remote event to a transport mechanism. In another embodiment, the method also includes the step of transmitting, by the transport mechanism, the remote event to the target subsystem using TCP/IP. In another embodiment, the method also includes the step of generating, by one of the first plurality of subsystems, an event for transmission to another subsystem. In another embodiment, the method also includes the step of determining, by the event bus, the target subsystem for a posted event. In another embodiment, the step of determining also includes determining, by the event bus, the target subsystem for a posted event using a dispatch table.
In another aspect, the invention also relates to a client-server network. The client-server network includes a first server including a first plurality of subsystems and a first event bus and a second server including a second plurality of subsystems. One of the first plurality of subsystems posts to the first event bus a local event having as its target another of the first plurality of subsystems and posts to the first event bus a remote event having as its target one of the second plurality of subsystems.
In one embodiment, at least one subsystem on each server includes a transport subsystem, the transport subsystem transmitting remote events to a target subsystem. In another embodiment, the transport subsystem transmits remote events to a target subsystem using TCP/IP. In another embodiment, the system includes a transport mechanism that is associated with the event bus. In another embodiment, the event bus delivers local events to a target subsystem. In another embodiment, the event bus includes a dispatch table for determining the target for a posted event. In another embodiment, the event bus includes a data object. In another embodiment, at least one of the subsystems includes a data object.